﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>Is 函数列表 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="Functions for checking the type and other conditions of a given value." />
<meta name="ahk:equiv-v1" content="lib/IfIs.htm" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
</head>
<body>

<h1>Is 函数</h1>

	<pre class="Syntax">Result := Is<i>Something</i>(Value <span class="optional">, Mode</span>)</pre>

<p>这些函数进行各种检查. 有三类:</p>
<ul>
  <li><a href="#cat-type">Type</a>: 检查一个值的类型, 或者一个字符串是否可以被解释为该类型的值.</li>
  <li><a href="#cat-misc">Misc</a>: 根据给定的值或变量引用, 检查杂项条件.</li>
  <li><a href="#cat-string">String</a>: 检查一个字符串是否符合特定的模式. <em>Value</em> 必须是一个字符串, 否则抛出 <a href="Error.htm#TypeError">TypeError</a>.</li>
</ul>
<p><em>Mode</em> 仅对 IsAlpha, IsAlnum, IsUpper 和 IsLower 有效. 默认情况下, 只考虑 ASCII 字母. 要根据当前用户的区域规则执行检查, 请为  <em>Mode</em> 参数指定字符串 <code>"Locale"</code>. 也可以通过指定 0 或 1 来使用默认模式.</p>

<h2 id="cat-type">Type</h2>
<p>检查一个值的类型, 或者一个字符串是否可以被解释为该类型的值.</p>
<table class="info">
  <tr>
    <th style="width:15%">函数</th>
    <th abbr="Descr">描述</th>
  </tr>
  <tr id="integer">
    <td>IsInteger</td>
    <td>如果 <em>Value</em> 是整数或不带小数点的纯数字字符串(十进制或十六进制), 则为 True. 允许前导和尾随空格和制表符. 该字符串可以以加号或减号开头, 并且不能为空.</td>
  </tr>
  <tr id="float">
    <td>IsFloat</td>
    <td>如果 <em>Value</em> 是浮点数或包含小数点的纯数字字符串, 则为 True. 允许前导和尾随空格和制表符. 该字符串可以以加号, 减号或小数点开头, 并且不能为空.</td>
  </tr>
  <tr id="number">
    <td>IsNumber</td>
    <td>如果 <code>IsInteger(<i>Value</i>) or IsFloat(<i>Value</i>)</code> 为 true, 则为 True.</td>
  </tr>
  <tr id="object">
    <td><a href="IsObject.htm">IsObject</a></td>
    <td>如果 <em>Value</em> 是一个<a href="../Objects.htm">对象</a>. 这包括从 <a href="Object.htm">Object</a> 派生的对象, 原型对象(如 <code>0.base</code>) 和 COM 对象, 但不包括数字或字符串.</td>
  </tr>
</table>

<h2 id="cat-misc">Misc</h2>
<p>根据给定的值或变量引用, 检查杂项条件.</p>
<table class="info">
  <tr>
    <th style="width:15%">函数</th>
    <th abbr="Descr">描述</th>
  </tr>
  <tr id="label">
    <td><a href="IsLabel.htm">IsLabel</a></td>
    <td>如果 <em>Value</em> 是当前作用域中定义的<a href="../misc/Labels.htm">标签</a>的名称, 则为 True.</td>
  </tr>
  <tr id="set">
    <td><a href="IsSet.htm">IsSet</a></td>
    <td>如果变量 <em>Value</em> 已经被赋值, 则为 True.</td>
  </tr>
  <tr id="setref">
    <td><a href="IsSet.htm">IsSetRef</a></td>
    <td>如果 <em>Value</em> 所包含的 <a href="../Concepts.htm#variable-references">VarRef</a> 已经被赋值, 则为 True.</td>
  </tr>
</table>

<h2 id="cat-string">String</h2>
<p>检查一个字符串是否符合特定的模式. <em>Value</em> 必须是一个字符串, 否则抛出 <a href="Error.htm#TypeError">TypeError</a>.</p>
<table class="info">
  <tr>
    <th style="width:15%">函数</th>
    <th abbr="Descr">描述</th>
  </tr>
  <tr id="digit">
    <td>IsDigit</td>
    <td>如果 <em>Value</em> 是一个正整数, 一个空字符串, 或仅包含字符 0 到 9 的字符串, 则为 True. 不允许使用其他字符, 例如以下字符: 空格, 制表符, 正号, 负号, 小数点, 十六进制数字, 以及 0x 前缀.</td>
  </tr>
  <tr id="xdigit">
    <td>IsXDigit</td>
    <td>十六进制数字: 与 <em>digit</em> 相同, 但也允许使用字符 A 到 F(大写或小写). 如果存在前缀 0x, 则可以接受.</td>
  </tr>
  <tr id="alpha">
    <td>IsAlpha</td>
    <td>
      <p>如果 <em>Value</em> 是字符串, 可以为空字符串或仅包含字母字符. 如果字符串任意位置有任何 digit, 空格, 制表符, 标点或其他非字母的字符时, 则为 False. 例如, 如果 <em>Value</em> 包含一个空格后跟字母, 则 <em>不被</em> 视为 <em>alpha</em>.</p>
      <p>默认情况下, 只考虑 ASCII 字母. 如果要根据当前用户的区域规则来执行检查, 请使用 <code>IsAlpha(Value, "Locale")</code>.</p>
    </td>
  </tr>
  <tr id="upper">
    <td>IsUpper</td>
    <td>
      <p>如果 <em>Value</em> 是字符串, 可以为空字符串或仅包含大写字母字符, 则为 True. 如果字符串任意位置有任何 digit, 空格, 制表符, 标点或其他非大写字母的字符时, 则为 False.</p>
      <p>默认情况下, 只考虑 ASCII 字母. 如果要根据当前用户的区域规则来执行检查, 请使用 <code>IsUpper(Value, "Locale")</code>.</p>
    </td>
  </tr>
  <tr id="lower">
    <td>IsLower</td>
    <td>
      <p>如果 <em>Value</em> 是字符串, 可以为空字符串或仅包含小写字母字符, 则为 True. 如果字符串任意位置有任何 digit, 空格, 制表符, 标点或其他非小写字母的字符时, 则为 False.</p>
      <p>默认情况下, 只考虑 ASCII 字母. 如果要根据当前用户的区域规则来执行检查, 请使用 <code>IsLower(Value, "Locale")</code>.</p>
</td>
  </tr>
  <tr id="alnum">
    <td>IsAlnum</td>
    <td>除了还允许 0 到 9 的数字外, 其他与 <a href="#alpha">IsAlpha</a> 相同.</td>
  </tr>
  <tr id="space">
    <td>IsSpace</td>
    <td>如果 <em>Value</em> 是字符串, 可以为空字符串或仅包含下列空白字符: 空格(<a href="../Variables.htm">A_Space</a> 或 `s), 制表符(<a href="../Variables.htm">A_Tab</a> 或 `t), 换行符(`n), 回车符(`r), 垂直制表符(`v) 和进纸符(`f), 则为 True.</td>
  </tr>
  <tr id="time">
    <td>IsTime</td>
    <td><p>如果 <em>Value</em> 是有效的日期时间戳, 可以是 <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a> 格式的全部或开始部分, 则为 True. 例如, 类似 2004 这样的 4 位字符串被视为有效的. 使用 <a href="StrLen.htm">StrLen</a> 确定是否存在其他时间分量.</p>
      <p><em>Value</em> 必须为 4 到 14(包括) 之间的偶数位才被认为有效.</p>
      <p>小于 1601 的年份会被视为无效的, 因为操作系统通常不支持它们. 被视为有效的最大年份为 9999. </p>
    </td>
  </tr>
</table>

<h2 id="Remarks">备注</h2>
<p>由于在脚本开始执行之前, 原义数字(如 <code>128</code>, <code>0x7F</code> 和 <code>1.0</code>) 会转换为纯数字, 因此原义数字的格式会丢失. 为了避免混淆, 上面列出的字符串函数如果给定一个纯数字, 则抛出异常.</p>

<h2 id="Related">相关</h2>
<p><a href="../Variables.htm#YYYY">A_YYYY</a>, <a href="FileGetTime.htm">FileGetTime</a>, <a href="If.htm">If</a>, <a href="StrLen.htm">StrLen</a>, <a href="InStr.htm">InStr</a>, <a href="StrLower.htm">StrUpper</a>, <a href="DateAdd.htm">DateAdd</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a class="ex_number" href="#ExBasic"></a> 检查 <var>var</var> 是浮点数还是整数, 并检查它是否是有效的时间戳.</p>
<pre>
if isFloat(var)
    MsgBox var " is a floating point number."
else if isInteger(var)
    MsgBox var " is an integer."
if isTime(var)
    MsgBox var  " is also a valid date-time."
</pre>
</div>

</body>
</html>